package ejb.cbm.admin.entity;
// default package

import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.apache.commons.lang.StringEscapeUtils;



/**
 * Parametro generated by MyEclipse Persistence Tools
 */
@Entity
@Table(name="PARAMETRO")

public class ParametroEntity  implements java.io.Serializable, Comparable {

    // Fields    

     private Long codigoparametro;
     private TipoParametroEntity tipoparametro;
     private String descripcion;
     private Double valornumerico;
     private String valoralfanumerico;
     private Long flagactivo;
     private ParametroEntity parametroPadre;
     private List<ParametroEntity> parametrosHijo;
     private String usuarioregistro;
     private Date fecharegistro;
     private String usuariomodificacion;
     private Date fechamodificacion;
     private Integer flagSistema;
     //private Integer codParametroUnico;
     
     // Constructors

    /** default constructor */
    public ParametroEntity() {
    	codigoparametro=null;
    }

	/** minimal constructor */
    public ParametroEntity(Long codigoparametro, TipoParametroEntity tipoparametro, String usuarioregistro, Date fecharegistro, String usuariomodificacion, Date fechamodificacion) {
        this.codigoparametro = codigoparametro;
        this.tipoparametro = tipoparametro;
        this.usuarioregistro = usuarioregistro;
        this.fecharegistro = fecharegistro;
        this.usuariomodificacion = usuariomodificacion;
        this.fechamodificacion = fechamodificacion;
        //this.codParametroUnico = codParametroUnico;
    }
    
    /** full constructor */
    public ParametroEntity(Long codigoparametro, TipoParametroEntity tipoparametro, String descripcion, Double valornumerico, String valoralfanumerico, Long flagactivo, String usuarioregistro, Date fecharegistro, String usuariomodificacion, Date fechamodificacion) {
        this.codigoparametro = codigoparametro;
        this.tipoparametro = tipoparametro;
        this.descripcion = descripcion;
        this.valornumerico = valornumerico;
        this.valoralfanumerico = valoralfanumerico;
        this.flagactivo = flagactivo;
        this.usuarioregistro = usuarioregistro;
        this.fecharegistro = fecharegistro;
        this.usuariomodificacion = usuariomodificacion;
        this.fechamodificacion = fechamodificacion;
        //this.codParametroUnico = codParametroUnico;
    }

   
    // Property accessors
    @Id
    
    @Column(name="CODIGOPARAMETRO", unique=true, nullable=false, insertable=true, updatable=true, precision=5, scale=0)
    @GeneratedValue(generator="SQ_P")
    @SequenceGenerator(name="SQ_P",sequenceName="SQ_PARAMETRO")
    public Long getCodigoparametro() {
        return this.codigoparametro;
    }
    
    public void setCodigoparametro(Long codigoparametro) {
        this.codigoparametro = codigoparametro;
    }
    @ManyToOne
    @JoinColumn(name="CODIGOTIPOPARAMETRO", unique=false, nullable=false, insertable=true, updatable=true)
    public TipoParametroEntity getTipoparametro() {
        return this.tipoparametro;
    }
    
    public void setTipoparametro(TipoParametroEntity tipoparametro) {
        this.tipoparametro = tipoparametro;
    }
    
    @Column(name="DESCRIPCION", unique=false, nullable=true, insertable=true, updatable=true, length=50)
    public String getDescripcion() {
        return this.descripcion;
    }
    
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }
    
    @Column(name="VALORNUMERICO", unique=false, nullable=true, insertable=true, updatable=true, precision=22, scale=0)
    public Double getValornumerico() {
        return this.valornumerico;
    }
    
    public void setValornumerico(Double valornumerico) {
        this.valornumerico = valornumerico;
    }
    
    @Column(name="VALORALFANUMERICO", unique=false, nullable=true, insertable=true, updatable=true, length=50)
    public String getValoralfanumerico() {
        return this.valoralfanumerico;
    }
    
    public void setValoralfanumerico(String valoralfanumerico) {
        this.valoralfanumerico = valoralfanumerico;
    }
    
    
//    @Column(name="CODIGO_PARAMETRO_UNICO", unique=false, nullable=false, insertable=true, updatable=true, precision=0, scale=0)
//    public Integer getCodParametroUnico() {
//		return codParametroUnico;
//	}
//
//	public void setCodParametroUnico(Integer codParametroUnico) {
//		this.codParametroUnico = codParametroUnico;
//	}

	@Column(name="FLAGACTIVO", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    public Long getFlagactivo() {
        return this.flagactivo;
    }
    
    public void setFlagactivo(Long flagactivo) {
        this.flagactivo = flagactivo;
    }
    
    @Column(name="USUARIOREGISTRO", unique=false, nullable=false, insertable=true, updatable=true, length=30)
    public String getUsuarioregistro() {
        return this.usuarioregistro;
    }
    
    public void setUsuarioregistro(String usuarioregistro) {
        this.usuarioregistro = usuarioregistro;
    }
    @Temporal(TemporalType.DATE)
    @Column(name="FECHAREGISTRO", unique=false, nullable=false, insertable=true, updatable=true, length=7)
    public Date getFecharegistro() {
        return this.fecharegistro;
    }
    
    public void setFecharegistro(Date fecharegistro) {
        this.fecharegistro = fecharegistro;
    }
    
    @Column(name="USUARIOMODIFICACION", unique=false, nullable=false, insertable=true, updatable=true, length=30)
    public String getUsuariomodificacion() {
        return this.usuariomodificacion;
    }
    
    public void setUsuariomodificacion(String usuariomodificacion) {
        this.usuariomodificacion = usuariomodificacion;
    }
    @Temporal(TemporalType.DATE)
    @Column(name="FECHAMODIFICACION", unique=false, nullable=false, insertable=true, updatable=true, length=7)
    public Date getFechamodificacion() {
        return this.fechamodificacion;
    }
    
    public void setFechamodificacion(Date fechamodificacion) {
        this.fechamodificacion = fechamodificacion;
    }
    
    @Override
    public boolean equals(Object o) {
    	ParametroEntity pe=(ParametroEntity)o;
    	if(codigoparametro==null){
    		return valoralfanumerico.equals(pe.getValoralfanumerico());
    	}
    	return codigoparametro.equals(pe.getCodigoparametro());
    }

    @ManyToOne
    @JoinColumn(name="CODIGOPARAMETROPADRE")
    public ParametroEntity getParametroPadre() {
        return this.parametroPadre;
    }
    public void setParametroPadre(ParametroEntity parametroPadre) {
		this.parametroPadre = parametroPadre;
    }
    
    @OneToMany(fetch=FetchType.EAGER, mappedBy="parametroPadre")
    public List<ParametroEntity> getParametrosHijo() {
        return this.parametrosHijo;
    }
    public void setParametrosHijo(List<ParametroEntity> parametrosHijo) {
		this.parametrosHijo = parametrosHijo;
	}
    
    @Transient
    public String getValorTextoHTML() {
		if(descripcion != null) {
			return StringEscapeUtils.escapeHtml(descripcion).replaceAll(" ", "&nbsp;");
		} else {
			return "";
		}
	}

	public void setFlagSistema(Integer flagSistema) {
		this.flagSistema = flagSistema;
	}

	@Column(name="FLAGSISTEMA", unique=false, nullable=false, insertable=true, updatable=true, precision=1, scale=0)
	public Integer getFlagSistema() {
		return flagSistema;
	}
	@Transient
	public boolean isSistema() {
		return flagSistema==1;
	}

	public int compareTo(Object o) {
		return 0;
	}
}